package com.c.dao;

import com.c.pojo.Role;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface RoleDao {
    //根据用户ID查询关联的角色
    Set<Role> findByUserId(Integer userId);

    //查询所有角色
    List<Role> findAll();

    //通过用户ID查询角色ID，返回List（t_user_role）
    List<Integer> findRoleById(Integer id);

    //角色分页查询
    Page<Role> findByCondition(String queryString);

    //判断角色是否存在
    Role findExist(Role role);

    //新增角色
    void add(Role role);

    //建立角色和权限多对多关系
    void setCheckRoleAndCheckPermission(Map<String, Integer> map);

    //根据ID查询角色信息
    Role findById(Integer id);

    //编辑角色
    void edit(Role role);

    //清理当前角色关联的权限，操作中间关系表 t_role_permission 表
    void deleteAssociation(Integer id);

    //判断角色是否被用户所有关联
    Long findUserByRole(Integer id);

    //删除角色
    void deleteById(Integer id);

    //维护权限角色中间表
    void addRolePermission(@Param("roleId") Integer roleId, @Param("permissionId") Integer permissionId);

    //维护菜单角色中间表
    void addRoleMenu(@Param("roleId") Integer roleId,@Param("menuId") Integer menuId);

    //删除旧的角色菜单关系
    void deleteRoleMenuByRoleId(Integer roleId);
}
